package cn.yang.pay;

import cn.yang.utils.HttpClient;
import com.github.wxpay.sdk.WXPayUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
public class WxPayController {

    @GetMapping("/wxpay/createOrder")
    public String createWxPayOrder() throws Exception {
        // 设置请求地址
        HttpClient httpClient = new HttpClient("https://api.mch.weixin.qq.com/pay/unifiedorder");
        httpClient.setHttps(true);

        // 创建请求参数
        Map<String, String> map = new HashMap<>();
        map.put("appid", "wxab8acb865bb1637e"); // 微信AppID
        map.put("mch_id", "11473623"); // 商户号
        map.put("nonce_str", WXPayUtil.generateNonceStr()); // 随机字符串
        map.put("body", "振涛云计算2404a微信支付"); // 商品描述
        map.put("out_trade_no", "2404afritno1"); // 商户订单号
        map.put("total_fee", "1"); // 支付金额（单位：分）
        map.put("spbill_create_ip", "127.0.0.1"); // 终端IP
        map.put("notify_url", "127.0.0.1"); // 支付结果通知地址
        map.put("trade_type", "NATIVE"); // 支付类型（扫码支付）

        // 签名
        String sign = WXPayUtil.generateSignedXml(map, "2ab9071b06b9f739b950ddb41db2690d");
        map.put("sign", sign);

        // 设置XML参数并发送请求
        httpClient.setXmlParam(sign);
        httpClient.post();

        // 获取响应结果
        String result = httpClient.getContent();
        Map resultMap = WXPayUtil.xmlToMap(result);
        // 返回二维码链接
        String codeUrl = resultMap.get("code_url").toString();
        System.out.println(codeUrl);
        return codeUrl;
    }
}
